One thing I forgot to mention, groups.jubilo.org slash Denver, which like I said before, is not just Denver. That is a great place to find work and workers. There's a long list of jobs that have been posted very recently. We're only like back a week here and now we're two weeks. A long list of jobs at awesome places. Now I feel like I have to go down all the way. Oh, that's me. Awesome places to work and there's huge demand so if you aren't currently as employed in Drupal as you'd like to be, this is a good place to change that. And also a great place to find one of the 750 people who are now members of this group looking at those jobs, if you're looking to hire someone. With that, Rick's going to tell us about commerce, speaking of money. All right. Awesome. Well, good. This is actually supposed to be a little bit bigger than that but thankfully this is more for me to just have some pointers to start the conversation. My name is Rick. I've been in Drupal now for three years. My very first project was a really big Uber cart installation on Drupal 6 and that site is still alive and I actually have experience also, sorry, I don't know why it's trying to get a network connection so I'm going to turn you off. And also turn off my backup because it's trying to do that. Timeshare. Okay. So I have a lot of experience with Uber cart, not as much with Drupal commerce but I evaluated it at least three or four times for my clients in terms of trying to migrate over to it and sort of what features were there and what wasn't there and why we're still using Uber cart but I will go over both as best I can. Basically, this is sort of a high level talk because commerce is just so important for Drupal and I always see money as a seed and how the more you can help a client make money on their site through a good commerce site by keeping the cost down and maximizing what they can do, you're really building this great cycle where Drupal then can have more money coming in because they like that. One of my clients spent almost, I can't even say the number, way, way over six figures on a custom proprietary CMS when we came in with Drupal and did it for less than six and that led to a two-year project because we did it for such a good amount and allowed them to have the features that it really helped the development and also the Drupal community because the cycle starts beginning of them saving money and also be able to have more features to deliver to others. So I really, this is a very personal topic to me and I'm really passionate about it because if you do it right, it just really helps the community, helps us because we're all hired by people and also helps companies that are trying to get into Drupal. This talk is not about PCI compliance. I will, it's such a huge important topic when you're, every year dealing with e-commerce. So anyone who comes out of this meeting, especially new people saying I want to go do this, I'm going to create an online store, you should definitely hit this topic up very hard and research it. I'm happy to talk about it after the fact but I'm not going to really go into the nitty-gritty there. It'd be a great other talk here. We're going to talk briefly about other third-party solutions because sometimes it's not always best to use Drupal commerce or UberCart. We're not going to really be doing anything about code. Again, the goal is to be knowledgeable enough to be dangerous because, you know, any, like just like Drupal has this big learning curve, they call it the learning cliff, so does UberCart and commerce. And to do it right, you're going to have to do your research. So my goal is to really give you an overview but this shouldn't be a, oh, I know I'm going to use UberCart now and, you know, run with it. You have to really look at your specifications and requirements and whether or not it's right for you. So there's different ways of doing commerce. You know, the very old school way was just using websites as a, almost like a business card. You know, just sort of building, you know, selling products just by having people contact you. A lot of my clients are still in this sort of third-party solution where they use something like Volusions or BigCommerce where they're not really integrating with a Drupal. They'll have their normal Drupal or WordPress website and then they'll use a third-party solution. We'll go over that briefly where the pros and cons are of that. There's also like PayPal where, you know, the site really doesn't need a full-fledged cart like UberCart or commerce. It doesn't have the time or money to really dedicate towards that integration. And so you want to use something that's very easy so people can sell things and then get back to their site. But you don't want to spend, you know, 5,000, 10,000 X number of dollars building out a full-fledged platform. But where the meat of this is and where the, you know, about two-thirds of this talk is going to be on site integration using UberCart and commerce physically in Drupal and then what you can do with it. So this is sort of a scale of sort of like when you want to really do things with Drupal. You know, at the very easiest, sort of getting your toe in the water is just having physical products. You have books, you have DVDs or whatever. And then, but you don't necessarily need to use Drupal for that. As you go down the scale, like if you start doing with digital downloads or you start dealing with access control, premium content, like are they going to access your site to access to videos or PDFs or content, then you're going to want more of a tight integration because you don't want to have to then manually go into your CMS, add their user account, add their role. You want that to sort of be automated. And then as you get further down the list, like reoccurring payments or integration with a mobile app, you know, are they going to be able to pay for it on a mobile device? At that point, you really want something that can integrate closely with the CMS. And sometimes you just want a combination of all the above. One of my clients actually is you buy a product, you get access to a download, you get a reoccurring membership and then every month it charges you through CRON and then you can modify this and do all this stuff. We haven't done the mobile app version yet, but we may. And if we didn't have Drupal, this would just be an absolute nightmare. But because we have UberCart and so forth, we can integrate all these parts together, which is really awesome. Great example is Drupalize.me. They I believe are still on a Drupal 6 version of UberCart, but they do the whole process where again you have user access to premium content, meaning their videos. So you have to log in. I don't think they do downloads yet, but they very well could just hook that in and use like an Amazon S3 and then pass it through. What else? What other parts of it? They don't really do physical products, but you do recurring payments. So they probably are linking up with authorize.net CIM and then just every month or yearly charging you. And it's a really great example of how they put all those components together and leveraged a Drupal plus UberCart installation. But like I said, I'm not sure if they're up to D7 yet. So just a quick recap. You've got tight integration with Drupal's features, whether you're providing access to content, providing contextual. Every time I have an article about yoga, I have a yoga product. Or every time I have an article about blah, I want a product with that next to me via a taxonomy or a tag. That's when you definitely want to use it integrated with Drupal versus some other solution. And I don't want to harp on this too much, but I do want to say part of my job when clients come to me is not selling them something they don't need. A lot of people are like, oh, of course you're using Drupal. You're going to use UberCart or Commerce because that's the latest and greatest. Let's give you a full fledged installation. And then you only find out they have not even five products for sale. They don't have the budget to really deal with PCI compliance issues, which then puts them on the hook for a lot of legal liabilities if they don't do it properly. So really, before you dive into either of these, the question is, do I first need to have that level of feature and flexibility? And if not, go with those other third party solutions. And if yes, then you want to really start looking at your hard specs for UberCart or Commerce. And I already went over this. Did anyone have any questions? Okay. So let's just start getting into the meat of it. Let's just assume right now that you are definitely wanting to use one of the major modules, meaning UberCart or Commerce. You know, UberCart really is the past. It really is sort of a legacy product. It did make it to Drupal 7. I was actually shocked when the Drupal 7 went up. I did not think it was going to make it up there. But I was pleasantly surprised and very happy because it made the migration of two sites to Drupal 7 much easier because I didn't have to do a migration and a migration to Commerce in one swoop. So that was very, very helpful. But one of the problems I have with UberCart right now is it's really community only. When you want to develop more features and more functionality, unless some company is ready to fund it, it's really hard to find good UberCart programmers because a lot of them are already going into Commerce and working with the Commerce guys. And you know, it's really sort of, I feel like it's at the end of its life cycle. It's definitely not going to Drupal 8. I mean, they could go to Drupal 8, but it would be very difficult in my opinion. It's very mature, works out of the box. But I think that's where it's going to end. Whereas Commerce, you know, the Commerce guys is a growing company. They did raise $5 million. They're already going to keep building this out. It's going to be, it already is awesome at where it is. I think their Commerce kickstart package is at 1.5 and it's pretty good. And it's really new. It really works well with Drupal versus UberCart, which sort of try to do its own way on top of Drupal. And so it's definitely going to have an upgrade path and it's definitely going to be around for the next version of Drupal after that. This is the standard, you know, every time you talk about Drupal, they always say it's a bunch of Lego. So here's the spiel. UberCart is the out of the box solution, in my opinion. If you just need a site up and running with a cart and all this stuff already for you, you're going to want to use UberCart. Because a lot of it, it sort of, it makes a lot of assumptions. It sort of, it, you know, it already comes with everything sort of built in. It also makes it very rigid, meaning that when you want to change or adapt it, it's very difficult. And I'll show you a great example very soon. I compare it to like, if you would compare it like Drupal versus like PHPDB, you know, if someone came to you and said, I want a forum, you know, you could make Drupal a forum or you could just use a solution that's extremely targeted for that particular audience. So Drupal does give you this sort of do-it-yourself. When you do your first installation with Drupal, I know the first time I ever installed it three years ago, I just looked at it and I said, now what? It was about three days' worth of like diving into module pages and it took me a week to sort of go through every menu and submenu. Whereas UberCart's great, it's like, oh, here's the coupon thing, here's all the features that come with it, et cetera. Okay, so here's an example. I can scale up. Actually, I'm going to leave this real quick. So this is what happens with UberCart when you install the coupon module. I understand it. Let me, how do I zoom in again? It's like pinch. Let me just move this over. So You tried Command Plus in your browser. That won't zoom everything. Okay, Command Plus. Yeah, look at that. You can also zoom the projector and you'll have it come up to you. That'd be perfect if you could do that. I explicitly made this talk to be as less focused on the slides as possible because I know this has been a hard environment to do that, but thank you so much. So this is an example of the out of the box but very rigid versus flexible. Like That's as big as it gets. No worries, just lean really close. We can fall back. Yeah, sure. See, I love this. Engineers. Okay. All right. Let's just, so with UberCart and we use coupons a lot with a lot of my clients because they always want to try to do promotions, etc. So you get all these options like, you know, do you want to apply it to the subtotal, all products? Is there date restrictions? How many times can you use it? How many times can you use it per user? You know, are we going to tag it for certain applicable taxonomies, certain skew numbers, certain roles, combination? I mean, it's literally every possible combination you can think of and then there's commerce where this is your first coupon. And if you want to go to make, you have to actually make coupon types, which is awesome, because you can, but then here you are, you're at the basic fields. You have to then sort of create it from scratch and then work with rules and do all these things. So if you are just a general site builder who just needs to be able to get up and running, you know, UberCart gives you that literally out of the box. And I'm going to switch back to my slides real fast. You create your coupon type and then you have to create fields. And you know, if you're very adept at making, using the Drupal field system, that could probably take you only a couple hours. But if you've never done it before, it could probably take you a week. And you know, depending on what your client's paying for you or if it's you that's on the hook, you may want to do that. And I actually had a conversation with one of the commerce guys two days ago on a phone call for a project we were potentially working on. And he explicitly said, he's like, yeah, the coupon module was pretty screwed up when they first launched it with commerce because someone from the community made it, but they didn't really work well with commerce. And it just, it's not where they want it to be, even though the commerce has been out for a long period of time. And so commerce is really great for developers because they can be very flexible in how they make it exactly the way they want it. But sometimes a customer just needs a goddamn coupon and they need to start selling stuff and they don't want to deal with that. So depending on if you are more of a developer versus a site builder, that's a big consideration. So I just want to say like, you know, but UberCart isn't like all that either because when you need to do something specific, if your client has a very specific use case, you often have to resort to hacks. I had a client where we had to sell a membership, but we wanted to have anonymous checkout and the coupon had to be valid if the person still had an email in the system, but UberCart didn't know that. So we had to do this like convoluted system of checks and balances. And then every time UberCart came out with a new version, those changes got wiped out. We had to reimplement them because UberCart didn't provide the hooks to do that programmatically. You actually had to go in and just adjust it. And that honestly was very stressful on me and my two other programmers. And it just wasn't very, it wasn't very useful. And I ultimately just always refused every time they said, let's do it this way. I said, UberCart just can't do that. It can do it, but we're not going to do that. Because commerce is really built to give you that hook plugin system where it's like, hey, you want to do this convoluted set of rules where it does this, this, and this? Great. It's already in the box. You can save it in features and it's not going to be disrupted every time you upgrade commerce. So if flexibility is your primary goal or requirement and you have the developers and the time to do it, commerce is definitely going to be where you want to spend your time and attention. So my rule of thumb, if a client is very cost-conscious, if they have just an extremely limited budget and they don't really have strict requirements, they're mainly site builders or they're really on a short-term basis, I mean, I'm almost like, yeah, UberCart, we're just going to do this, get it out of the way, and just try to do it really quick and get it working. Whereas commerce, it's more like we need to do it right. We're going to try to have an app integration. We have developers that really can get in there and do it just the way we want it. And we also want to not have to redo this or migrate it when we get to Drupal 8. We don't want to spend $50,000 to migrate all this stuff later on. So we want to future-proof it and just be better integrated in with Drupal. That's when you're going to want to do commerce, in my opinion. It can obviously change based on the context. Like I said, UberCart's not all that bad. Drupalize.me is a great example. Membership sites, I run two of them. Downloads. I have a friend in Virginia, one of his side projects is he runs a yoga download site. And they make lots of money just selling yoga downloads using Drupal 6 still with UberCart. UberCart has tons of modules. It's already sort of built out. Commerce is still sort of being built. Whereas UberCart has most of the stuff already there, which can be very helpful. And I think it still has more options right now than commerce, to be honest with you. If you're doing a Drupal 6 to Drupal 7 upgrade, it's really easy to do. UberCart is almost not even any additional work to make that happen. I had to change a few field names. But other than that, it was a straightforward upgrade. And for any developers out there, there's a lot of opportunity for people on Drupal 6 that want to go to Drupal 7. So knowing how to do migrations will bring in your business, especially if you're a freelancer and are hip to what these e-commerce options. And then in addition, commerce migrations. Once you get them up to Drupal 7, there's a lot of opportunity to move people to commerce once it makes sense for them. For my clients, it's not right at the precipice of moving them to commerce because it just has enough features that's worth the move. But it took us a long time to get there. So summarizing, Drupal is an extremely powerful CMS for using commerce. To make contextual products next to articles or providing membership access sites or all these things. And right out of the box, you get a lot of features. Products, coupons, access control stuff, you name it. There's pretty much a module for everything, especially in UberCart, but even now in commerce. UberCart's more of a turnkey solution. Again, site builders, but very difficult to adapt. No sort of future beyond Drupal 7, which still is going to be a long time. So it's not a big deal. But then, like I said, commerce is the future. It's really going to be the flexible, future-proof way to go. But you just have to now go out and build it. You have to take all the pieces and be smart enough to make it the exact way you want it. So that's sort of where I wanted to stop this presentation. At this point, I would like to be more Q&A because I wasn't sure how many people were here were going to be new or just all developers, et cetera. So we're just going to end right there and ask if anyone has any questions. Yes? So Ryan, I don't know how to pronounce his last name. Yeah, no one can. Just Ryan from the commerce fair. He posted a thing up on Drupal Commerce that says Drupal Commerce for the rest of us, which is sort of addressing the needs of non-developers trying to get commerce on and running. Have you heard anything? It sounds like you were talking to the developers. Any updates on that? There's no updates. Commerce for the rest of us? I mean, are you talking more like a Drupal installation profile? Yeah. They call it Kickstarter version 2, basically. That's slated for the summer. Right now, it's at 1.5 or actually went to 1.6, I think, this week. It's actually not too bad. It's really cool that they put out the different products because one of the things that trips a lot of people up in commerce is there's a product entity in the back end and then there's a product display node in the front and people are like, why am I duplicating it? It actually makes a lot of sense, but for a new user out of the box, it's very confusing. So what they did in the Kickstarter profile is they did a lot of those, let me step back. In commerce, they said, we're going to make no assumptions. We're just going to give you all the pieces and now you build it. There is the solution to that, get it more towards what UberCart would be while not losing the flexibility of the overall commerce framework. Once they got that funding, I think one of their big priorities was to make commerce more for everybody and that's where the commerce kickstart profile is going to help a lot. But right out of the box, it's still not quite there, especially with contrib modules like coupons and et cetera. Yes? I just kind of want to mention, I don't know if any of you guys saw the commerce module that they started doing, but today they showed that, like what you said, the product display versus product paradigm, there's that new field that allows you to create a product while you're creating a display node. So I just wanted to mention that. See if anybody else had any experience with that. Yeah, there's actually a couple of other modules out there that make that a lot easier to do. I almost feel like that's something that just almost should have been enabled out of the box there and I feel like a few other things. I find it easier to turn off stuff than to figure out what to turn on when I come to new products. I understand, but commerce was mainly made for developers and it took probably a lot of time to do that whole process and they got it out as fast as they could with the amount of developers they had. So I'm sure that was probably something that was on their timeline, but just time resources could they do it. I think they were smart and they still had a launch, they still had to go to Drupal cons and Drupal camps to promote it to get sort of following. They actually surpassed the number of UberCart users, so even as it is, it's already more popular, but it's going to really take hold once they get that kickstart profile sort of more out of the box turnkey thing going. But I agree, if they had it right then, we'd be at 20,000 users versus I think 10 sites with it. So really no other questions. Yes? In terms of membership features, is that something that commerce will have? It does. It actually does. I think it's called commerce. It comes out of the box in commerce or it's a contributor to commerce roles. You can purchase through a rule just like UberCart does. Okay. Yeah. Which is very handy, extremely handy. Any other question is the recurring thing for membership? Drupal commerce does have a recurring API. It has two sites using it, but it does work. It actually does integrate with Authorize.net CIM, which means that they store the payment information on Authorize.net and then you just ping them with a token and it charges them for the next month. It works well. The one on UberCart is more, like I said, used and more robust. Actually, in my conversation with the commerce guys on Monday, they actually have their own in-house version I think that they're going to release that's going to be maybe even better than the current commerce recurring module that's out there already in Contrib. It is a big thing. They are focused on it, but again, they just haven't got to it yet. Yes? That was, I think, what brought me here today was I just wanted to get everybody's feel for the recurring piece, like who's done it right. Yeah, it's kind of a nightmare. Always complaints on that. Do you have a generalized use case that you can describe for commerce instead of UberCart? Not for commerce yet. I've evaluated it a few times, but I don't have a live commerce site with recurring right now. There's two ways you can do it, well, two broad ways. The first one is A, you should never have the credit card information on your site. That's just sex. D, you have 220 questions. You have to sell your soul. It's a terrible process. No matter what, you're going to be storing your credit card information on some other server, be it Authors and Ad, PayPal, whatever. I actually don't know if PayPal does it, but there's a couple, Braintree, Stripe, and a couple others. You either have Drupal sort of manage that through Cron, like it tracks when it should charge it, and then Cron pings it and then charges it, or on certain services like Authors and Ad, you sort of can set it in motion to charge from there. I don't like that second option because it's hard to have Drupal reach in and through the API, then turn that off. I like to keep the credit card information on your hosted PCI thing, but then have Drupal sort of ping it when necessary, because then you can use, for instance, with UberCart recurring payments, you can actually sort of modify when the date is going to get charged. If it fails, charge it again after a day or try after three days, and there's all sorts of cool things you can do. You can actually even have the customer update their credit card information directly there, as opposed to the other way where you sort of have to get the information from them, which again is a big security no-no, and then go into Authors.net and do it. Drupal passes the card information, it does the first charge, the credit card information stores a profile then in Authors.net, and then Drupal will then use basically, Authors.net returns an identifying token, so it doesn't keep the credit card information, and then you can hit the process button, and it will actually, or it just processes automatically, depending on which one you want to do, manual or automatic, and then it processes the transaction, gives you a return response that, yes, it happened, and then you extend the membership using the rules, which is a feature on the product. Where people get really tripped up is when you want to make the first payment $10, then the next payment $5, but you want to prorate it back, I mean, you get all these, that's where recurring payments is still not all there, and you may want to use a solution like Braintree where you have to then do more coding to integrate that communication, whereas if a user cancels that halfway through the month, it already prorates, charges back, whatever. Right now, with my customers, it's kind of annoying when that happens. If they do want to prorate it, you have to manually go in through Authors.net and do the partial refund, which is not automated, and it's not as ideal. So, recurring payments is not, it can be term key if you just stay with a very limited use case. As soon as you start doing anything beyond that, then it's custom coding. So, yes? I used the modules, again, from Utah, developed a MoneyScript membership module for that, and he integrated the connection into Authors.net, which with just using CIM, the same, it allows that for recurring, in the case that somebody's not using MoverGuard. Right. There's actually a couple modules, I think Pay and then Stripe. Those are two that I know of that. You can do sort of a, if you don't need the full-fledged UberCart, like, car checkout invoices, etc., etc., and you just need something to accept a donation or a recurring gift or whatever, yeah, those modules can do that, and they still integrate with Authors.net CIM. And it actually works. Yeah. Oh, yeah. And if you have that use case, then it's extremely useful to not use the full-fledged UberCart or Commerce, just do that. Again, I always say, like, really define your requirements, and if that's a possibility, stay with UberCart so you don't have to then transition or Commerce. So, and then also, I just want to say, I mean, I know I didn't want to talk about PCI compliance, but I still have to say some of it, like, you definitely want to try one that just outsources as much of the payment as possible. Otherwise, you're dealing with, like, three weeks of paperwork and lots of stuff that's not really developer-related just for the benefit of transaction credit card data on your site. So, if you can do something where you redirect, that's okay with your clients, definitely do that, because you really don't want to put the liability on yourself or your client to not do that properly. A lot of people, there's a lot of misinformation, like, yeah, UberCart's PCI compliant, just install it, it's just fine. But then if you put a user that has admin privileges to the users and they do this, I mean, you could just be swiping that information right out and you're dealing with a lawsuit. So, just be very careful when you use it to just think about what you're doing, and if you don't know, ask, because there are people out there, don't ask them on the forums, because, again, a lot of people have a lot of opinions. I'm not an expert in there. I know Apply Trust up in Boulder is very, like, this is their thing. You know, PCI compliance, so reach out to them if it's really that important to you and your clients. Yes? So, you talked about how commerce was designed for developers first, and also how UberCart is more for end users as the target market, and sounds like commerce is moving more towards leading that end user market, maybe not quite there yet, but moving in that direction. Yes. Is UberCart, are they meeting in, is UberCart moving in the other direction? It really can't, and that's sort of why UberCart, I believe, is sort of end-of-lined, because it was just built like we have this specific use case where we're going to sort of not even know that Drupal's there for the most part. We'll use Drupal hooks, but for the most part, you know, they even have their own rule system called conditional actions, which they're starting to migrate over to it, but I just don't think UberCart will have the legs to last more. I mean, people stay on it just because they're there, and maybe commerce isn't enticing enough to make the move, but I don't think it's really going to grow as a module and as a community, and I think Scott's right where I think commerce is going to try to be both by having that profile. They're going to be able to reach out to site builders still while keeping that underlying framework for developers intact. So I don't think UberCart will be able to meet them halfway. I think commerce is going to be able to take the whole spectrum, personally, in my opinion. Yes. Besides mobile, what else is in the future for e-commerce? I mean, just I think it's just downloads, membership access, mobile. I think, I mean, the commerce guys are doing a lot, but I don't, most of my use cases has already met with where commerce is going to be, so I haven't really looked beyond that. If anyone else knows of any other cool commerce things, chime in. So you could have a store without any product that needs to be shipped or anything like that. So it doesn't really make any assumptions in that area, so it can be used for a lot of, you know, but if you're looking for it to be a store out of the box that sells physical t-shirts and ships them with UPS table rates and all that, then you're going to have a little bit more work. By the way, UberCart and commerce do have integrations with like USPS and UPS, and you can get like calculated shipping rates and all these great things, so it's really, you know, tax rates, whatever. What about role management? Again, not as familiar with commerce with the roles, but with UberCart, yeah, you absolutely has expiration roles, and you can go and toggle it, and you have, when the roles are going to expire, you can make a view of it, et cetera, so you can manage those roles. Can you do that in commerce? Yeah, I assume you can, but I just haven't done it, so, but it's not there. It's going to be there like soon. Okay, yes? Sorry. No. I just, I keep kind of like just seeing what people are doing with commerce. Who's got the option thing going on, right, as far as like the options creation? You know, if you're programmatically creating products, then it's no problem, but if you're like creating a store for an end user where there's like t-shirts in different sizes and colors, what's the latest on that problem for commerce specifically, if anybody knows or has any insight? That's one thing I've like spoken with developers who say that that's one of the primary things that like puts them off of commerce and keeps them on UberCart is just that sort of- Attributes like- Yeah, attributes, options. That's what I thought, but I thought that's like one of their big selling points is commerce, was like you have these back-end entities with different- You have to create each one though to be an option. Of course, for every- Yeah, every variation. Pizza that's got like a variety of toppings, I think that's like the example. It's like you're looking at this exponential list of like products you have to create yourself. Two-dimensional, you have sizes and a topping. There might be a module out there. There's a couple modules. A pizza module? Yeah. You can eat that. Commerce is a pizza module, it's awesome. Papa John's developed it. Ryan has a module. There used to be a module called, well there still is, called Commerce Product Options or something like that that was really confusing to set up but actually worked. Then I just discovered recently Ryan, whatever, however you say his name, he has a module called Commerce Customizable Products that is not the best name because the way that works is you add fields to the line item and you have different types of line items and the fields on the line item show up in the add to cart form that allow you to customize it. Then I don't think that module does but there's another module, of course, that allows you to change the- adjust the price based on the options that were selected. I've never needed to do that part of it. I just needed the form to fill that while they were buying it. That is a good use case. I've never had it go- I've had to do a couple with attributes like do you want the red or blue or whatever but it's usually like three options and not like toppings or it could be an infinite number of combinations. But you could potentially create a rule that like based on the number of toppings clicked, it could increase the price by a certain dollar amount or percentage amount. Something to programmatically create the product entity when the option was like designed maybe. I don't know. I mean that's a really interesting use case. I haven't sat and thought with it enough but it certainly has some ideas. There's been a lot of work but Randy did a lot of work on examples. The Commerce Customizable Products. I just brought that up because I know that a lot of UberCart like people really into UberCart that I've spoken with a lot of times are like I'm not- whatever, Commerce is whatever because it doesn't do these options and attributes things. Well, it will hopefully eventually. I'm actually one of those whole box too. It's like again I'm so close to doing the Commerce but they're still like I'm just- I have other things I'd rather be developing right now. My client has an endless supply of work for me and doing the whole- making my own coupons right now is not my highest priority. But I will get- there are going to be some features that it's going to sort of mandate that I get over there eventually. Mainly just better recurring payments and integration with a lot of these outsourced payment options. I think they're going to be way more easier in Commerce in the long run. So, okay. Thank you. Applause We have a more informal gathering. If you can believe it gets more informal than this. Less techy, more just hanging out. Down at Interstate Kitchen and Bar which is a few blocks from here. So we're going to leave for there at like 830 if anyone who's interested is welcome to join us. Until then we have just general Q&A. So this is where you get all of your Drupal problems solved by other people. Hopefully. Hey. I have a question. I can't quite figure it out. So for user input on form fields I use TinyMCE and the Lizzy Big Module. A lot of kind of stuff. When on some sites when my user pastes anything with intrinsic HTML tags like a link, like a hyperlink for example, it freezes the WizzyWig window. They can no longer enter into it. So they have to preview to refresh the window, create a new WizzyWig input window. Yes. What version of TinyMCE are you using in your library? I have the same problem when I was using 1.6 for the latest. It's the latest. Yeah, I just built a site like two months ago. Maybe the previous version of TinyMCE, like the library itself, not the Drupal module. But I've experienced problems with TinyMCE that are alleviated by just using the previous JavaScript. Is this all browsers or just Firefox? It's all browsers. It happens in Chrome sometimes. It happens in Firefox too. I don't use IE enough to know whether it happens or not. But it seems to be browser-wide. I have noticed one thing that only further complicates the whole scenario, which is it does not have any certain themes. But I don't know. I haven't investigated the nuts and bolts of various themes enough to get a frame of reference on why it happens. Other themes don't happen with other themes because that's a very involved project and I don't have time for that. But I thought if anyone had ever encountered this before or overcome it, you could lead me in the right direction. But I haven't read anything on the forum even alluding to anyone having this problem. So yeah, it's a mystery to me. It has something to do with the interaction with browsers, TinyMCE, and the theme. Try the older jobs group library. It's still on the project page for TinyMCE on the TinyMCE website. I think it's 1.6 and the latest is like 1.6. You know, it didn't used to happen. So it never happened before. Maybe six months ago I started encountering it with site searching. So that is a good idea. Are you using the TinyMCE module or the WYSIWYG module to get to TinyMCE? Well, I'm using the WYSIWYG module. I've cloned it so many times it's been so long since I've actually installed it. But it clones with the site. But it's a WYSIWYG module and then the TinyMCE library, you put it in libraries and like that. Oh yeah. Do you know if you open up Fireball and you notice any JavaScript errors from the others? No, there's no errors that I can detect. There's no broken code. It just, the thing is when the page renders is fine, it's just when the user sticks something in there. So it's a case by case thing too. I've not been able to debug it. But my debugging skills are not heroic so. Does anyone here have any like paste from Word or any special functionality that runs one? Yeah, well paste with text works, but it's just a hyperlink that is just text. It has no linkage, which is kind of lame functionality-wise. These are interface-wise, yeah. You have to actually go through and then magically link it and that's just, I don't want that. Paste with Word, paste with Word works, but not that well. But I like it to just be able, I like it to just work. I mean, you know, it usually just that works. It works. You want to do that yourself, don't you? I want to hack it. I think though, I think you might be on the right track. I think it might be sent to a new version because before six months ago it worked by charm. So I'll get up to try. I have a series for like two weeks ago. I just like got the latest version of TinyMCE and it just like did not work. So it's weird. I'm just going to go back to the old one. So like it's the latest release of like the Drupal TinyMCE module and WYSIWYG and all that stuff. It's like totally like latest revision, but it's just the library that you put like sites, libraries. And that's not uncommon sometimes. So I'll have to revert. Somebody? Because that is a similar issue. I think I reverted to, I didn't actually do your issue. I had this issue where WYSIWYG wasn't showing up. It was like on nodes that were already existing. And actually I believe I went to an older version of TinyMCE and started working there. So I don't mess with it there. What WYSIWYG editors are you guys using? I've always used TinyMCE because like four years ago when I started it was the one that worked the best. And I never just migrated out of it, but it's been so long since I even looked at alternatives. What works best for you guys? I use CK editor. I use CK editor. The only thing I don't like about it is that all its buttons come in blocks. When the blocks wrap, it doesn't wrap well. I think you can change them. If you go into the dev list, there's like settings, I forget where it is. You can move them around. I totally understand how they're organized and what doesn't. Grouping and buttons and all that stuff. Make like extra rows or no rows or whatever. Is there a tutorial for that sort of thing? Markdown is like a way of basically they don't touch any HTML. Like BaseCamp does it. If you ever use BaseCamp, you use like asterisk for goal and you can number it by putting like pounds on it in front of it. And that kind of stuff. So they don't have to actually touch code or anything. They just kind of learn a little bit of like some sort of markdown scripting. You get the point across and that way they don't have to ever touch HTML. It just all looks good. I think Scott, are you going to spin up on it? During Fireball? Yeah. It's been too big. Sorry. Yes. I am also a maintainer on that project. And we don't use it anymore. Markdown is designed to look like text. So like if you were trying to format your text to look somewhat formatted, like if you wanted bullets, you'd put a little asterisk before them. It actually converts that into the HTML version of it, which is great as far as it goes. But the reason we stopped using it is it doesn't have any handling of media at all. So if you want images in your pages, which, you know, is a common thing, markdown isn't great for stuff like that. What was the little blind gerbil used? Previously it was textile and now it uses this very simple, I don't think this even goes through WYSIWYG. I think it's a very like, when you click things, it actually inserts the HTML into the text area. I think that's called BU Editor. Yeah, something like that. I was on the impression that Drupal 8 was going to have a WYSIWYG or something, and I thought it was going to be TinyMCE. I don't know, does anybody know this? It's always a question, it's always a debate. Yeah, well, I mean, whether you pick your own or whatever, I thought that was part of the approach. There was a Drupal 8 initiative for WYSIWYG. There's a mention of that in the keynote, but I don't know what the actual plan is. Yeah, I think Dries officially wants one in there now. So that means in pre-use. Some people are arguing for just making a proper framework so you can drop anyone you want in there. Basically pulling in WYSIWYG model. Which would be nice. Yeah, and then there's other people's skill that want WYSIWYG there when you first install Drupal. Is there anything else? Is there anything else? Or switching up the program or something like that. I think that's the big thing. They want a nice experience out of the box. Yeah, I will say that I clone my WYSIWYG with my site because they're always a pain to get working from scratch, just passing tag and all that kind of stuff. It seems similar theory, but it just never happens well. So it's kind of nice to have something that's included. I just want a word in there. In the WYSIWYG, you were finally just the U Editor. Is that what you have up there? Oh. The U Editor, is that what you were showing? Which is much less a WYSIWYG and more just a... Yeah. It's not a WYSIWYG at all. Yeah. Yeah, it's just a helper. Does everyone know what WYSIWYG is? What you see is what you get. Yes. So I know. Is that the question? I just realized that's a crazy acronym that some people might not be familiar with. That's just a word-like text editor. I know that Denver DribbleCon, they had a talk about this. You might be able to search for the video. They talked about the future of WYSIWYGs and looking at our competitors in the space, like Square and Space, and some of the other ones, like what would be really nice to achieve. I don't know if they got that on video, but I know that they had that talk and that most of the stuff at DribbleCon in Denver was recorded. So that might be something to check out if you're interested. I know it's an actual talk. What you see is what you can get. Yeah. What you see is not always what you can get, but it can be. Have Dribble come down to the website. Or either. Yes. We're just going to leave it at that. Have you set up a user as an editor? Yeah. Think about WordPress. I think the little focus. Dribble has an area in Dribble. Yeah. I mean, as I said, WordPress beats 10, down in that area for sure. It's limited in many ways, but in terms of just friendliness for an on-tacted person, far from there. And it ships not one, but two editors. Two? A DMC and an HTML. Dribble doesn't need two. That's because you get to pick the one you're going to use. The closer you get to that, the farther you get away from robust. Yes. Any non-WizziWay questions? Mix it up a little. I want to make sure we have a good day. I'm going to go to the library.org. I do a lot of marketing sites. Just buy Pagers and we go all the way to the library. Does it have a web module? Yeah. I've got a web where it's going up two votes at a time. This has fixed about every problem I've had with the building API module. Get the dev version of the module. Doesn't that fix everything? It fixes more breaks every day. At this point, I'm willing to have some sort of absolution. It's working fine. The voting game to I is tricky. Every time I use it, I've encountered something I had to ask. A lot of times, go up and get into dev version. What does it do? It basically allows you to use, it's not an end solution in itself. It's like a, is it jQuery fixed? JQuery fixed, but it would be just like a thousand sites you can pick four or five stars. It's tricky though. It's use integration is challenging. I'm sorting by total number of votes. It's pretty critical that the number of votes is accurate. This might be a dumb question, but have you tried reinstalling the module? I have not. That's a really good start. I mean, flush caches. I've done that. You could also potentially, I don't know that it's not useful, but you could potentially use flag module for that. Based on how many flags a particular piece of content has. That's interesting. The same. Okay, yeah, I didn't know about that. There's quite a few different ways to do a voting system. Google's got so many different kinds of modules. There's user points, there's different voting, not user voting, but it's based on activity. There's five star voting. The problem with five stars is it's somewhat inaccurate. So you have 300 nodes that all have five stars. How do you sort those? You can make more stars. Right, but still. It works. I have basically a tab next to it, like a little thing next to the node that has the total number of votes. When you hit up, it goes from 16 to 18. Even numbers are so much easier to divide by. Is there a setting in there that maybe has increment? I've been through it and I didn't see anything. It's supposed to increment by one, but it's not where I want it. Which is the weird thing is it's somewhere in the process of developing the site. It went from growing up by one to growing up by two. And I haven't done anything major to change. At one point I was like, hmm, that's gone up two, not one. Have you looked at the voting logs? I don't even know what those look like. But I'm wondering if it shows up as one person voting twice or one person voting with a double value. The way it's set up now is that you have to be in order. The way that it works to prevent somebody from just hammering the vote, it tracks users. You have to be logged in. You have to be an authenticated user of some description. I've created a new user level for that, which is sort of a very basic level. I haven't checked the logs yet, but it works otherwise. If I'm not logged in, nothing happens. But if I am logged in, it increments. But as I said, it just increments by two. Have you checked the database to see if it actually stores it as just a one? I haven't. That's a good place to look. And also, if there's duplicates, duplicate entries, maybe it's being written twice. So if you look at the database, maybe it would be... Yeah, see if there's double entries for every vote. They might at least tell you what is happening on the back end that is causing this duplication. And then you can figure it out in there. Here's a request for it to work like that, but apparently it doesn't yet. So you could help this person. There you go. I'm just like, okay, I've got a ready-built solution for you. Could you maybe limit that with a rule or something? I mean, rules are something I need to do anyway, because I need to implement that. Because what I want to do is use rules to create some sort of event when it's an anonymous user attempts to vote. So it's something I'll look into. Because it's one thing I realized. I was like, if somebody knows that you have to be authenticated, then they're just going to hammer at it, wondering why it's not working. I guess you could also say, like, bind it to whatever event or whatever action and just be like, I want to do this once. Right. It kind of sounds, so you said it does it with JavaScript too? Like the button is like a JavaScript event? That's to my knowledge, yeah. I wonder if it's just like for some reason, it's just like the event handlers are catching each one click twice or something. I've seen that happen before. Yeah, I've seen that happen too with a lot of like jQuery stuff where you have kind of like, especially with like views, you have a bunch of like jQuery buttons and you click one of them, and it applies to like all buttons. So especially like that might be something you could think about if it's in a view. It is, it definitely is. It's very much a view. Yeah, that's definitely something to look at. And maybe pull it apart and put it somewhere outside of the view to see whether it does the same thing. And that's like a button to see if it does it just on the view or if it does it on itself. Right, yeah. Also, like you can just pop up in like in Firebug or whatever. Yeah, just have a look to see if there's any errors. Just debug it and step through it, break step. Cool. Exactly. I mean, to be honest, it's been one of a number of things I'm trying to sort of figure out on this thing. So there's more troubleshooting to do. Yeah, that would be my suggestion. It would be like if you can, if that bug is replicated in just a single node view, like just viewing a node versus like it being in views. Right. Did you have a question? Yeah, I think those would be a quick question. I need to get to the short URL in a nice way. Is there a module to do that? There is. The ultimate search engine. It's called short URL. That's only Drupal 6. Yeah, it's only for search engines. You want something like these short URLs? Yeah. It's for Twitter. Most of the social media sites automatically shorten for you. I'm using Twitter doesn't, which is where I need it. I bet there's something in the issue queue. Did you put bit.ly in bit.ly? Yeah, there's a bit.ly module there. There's a Drupal 7. So as long as that works. It needs your review. Short URLs need to work with multiple types of services. I think bit.ly lets you have your own domain too now. Yeah, they do if you want to shell out cash. Google ad cash. Google the cash down code. Thank you. I actually have a question that's related to voting real quick. And then I'm monopolizing. So I use the five-star widget. It uses the standard field class to list the widget, but the field class by default is vertical. Since there are like eight different voting subsections, I'd like them to be horizontal. But I can make the class float and do that kind of stuff if there's a relative. But it is a core class. And so if I hack it, it messes everything up. Any thoughts? Can you just replace it with jQuery? Is there some sort of ID or burden classes? You know how Geese has a billion, a jillion classes. Can you just grab that and replace it with a little jQuery stuff? I guess I could hack the mod and force it to where you're at. Or just do a new theme. Do an add mod on your jQuery. Do you want to change the class in the HTML or change the CSS handling of that class? Ideally, I'd like to change the class because the class is a class that's used in core for every field. So even in the admin section, instead of all the fields doing vertical like they normally are, they're all over the page because now they float. So it breaks everything. So I'd like to change the class to something not going to be in the CSS and just be different. You can override the theme function or put something in a pre-process function that lets you capture it and change it on the way out. Say that again. I'll research that. You can override the theme function so that you can recreate how that's done, although that might work globally. But I think you can set up a pre-process function in your theme template.php file and then just capture that and then rewrite it on the way out. You might even be able to just write a template file for the field specifically, like dash dash five star whatever it's called, and just add whatever else you want there. So that it only ever writes it for that theme. Because that is a different theme, so that'll stay intact. Right, it'll be a theme template file. Actually, that'll solve my problem. Okay. Hey. Thank you. I'm done monopolizing that. You're true. We'll save that for a friend of yours. Okay. It's a lock, yeah. Anyone else? Every problem is solved? That's better. Oh, like the green? Oh, yeah. Has anyone ever used a workflow module? Yes. So you liked it? No. It gets tricky with larger workflows. If it's got something fairly simple, it works all right. And your difficulty kind of squares itself if you've got workflows of edits happening, because then you've got to hold the revisions module and do fun stuff with that and rules. Like I said, the difficulty kind of squares itself. Yeah, it just kind of flashed back to one of the sites that we worked on one time, Matt Tucker. He had this page that was like this pretty long. It was just like all these rules. And if you like resaved the page, it broke everything. What permissions you have to change from one state to another. That is crazy. The permissions, it gives you a checkbox for every role and every combination of workflow states. So if you have like 12 workflow states and like 10 roles, that's like 1,400 checkboxes on one page. I have been hearing people mention the Workbench module. Yeah, I didn't even realize Workflow had a Drupal 7 version. I thought Workbench was the Drupal 7 version. But then again, we thought Commerce was a replacement for UberCart. True. There's an upcoming webinar I thought we had on Workbench. Oh yeah, I got that email too. Free webinar. Yeah, I understand Workbench is a lot more rigid in terms of workflows. Yeah, Workbench is more towards publishing. Kind of the UberCart WordPress, it assumes a certain use case. You can definitely move out of that use case if you want to, but it starts with a specific use case that's like a kind of a magazine publishing workflow. To be honest, there's lots of magazine websites out there on Google. Can I ask a follow-on question on that? I have a very simple use case. Somebody in the student's data would want to approve it before it's published. What would you use? I haven't used Workbench. I've just heard people talking about it. Right, and Workbench is Drupal 7 only, so that's something to keep in mind. So I don't know about Workbench either, really. Workflow is one thing. Another thing is simply just going with don't allow the users, the writers, to publish things on their own and throw together some views that pull together all the unpublished nodes for you to review and just go with something simple like that. I'm a little frustrated with Workbench, just like everything becomes a new draft. So you think you published it, you give it a try, you just keep that in mind. Double-prove everything. Couldn't you use rules to do that, like if a certain level of user went to publish it went somewhere else? I'm not catching what you're saying. I mean, you say basically you want a certain level of user to be able to, if they, when they do something, attempt to publish, it goes, it doesn't publish. You could use rules, but I'm just thinking the permissions for being able to publish in their informational nodes to be, when they're not allowed to. I don't think it was that great. No, there's another module that I want to do. Yeah, I'm not sure about that module. There's always a module. Yeah. Kind of like the weird hacky way I've been handling Workflow is just kind of by using a combination of just what he was saying, like giving certain rules access to publish content and then like using a field that's like a taxonomy term reference of different states that like a node could be in. And then there's a field permissions module that so you say like only the head editor can change this taxonomy term field from like, I don't know, from accepted to implemented or like something like that. But I've been trying to find a better solution that's a little bit more robust than just a taxonomy term field and do all this. That specific like author editor, only editors can publish Workflow is exactly what Workbench does. So if that's your use case, Workbench is good. If you have any other use case, Workbench might get in your way. I have a weird use case where essentially where I have to basically, it's like a change request kind of like document management system kind of. So basically a node gets created, then like the chair of this committee says that it's like ready to be reviewed by the entire board and then they review it. And then it's ready to be reviewed by like 150 members at this special meeting. And then only then can it be like accepted. Wait, are you working on Drupal.org? I just make it the Illuminati. Yeah, so it's a weird use case and I'm just trying, I'm kind of like stretching this little happy workflow that I have to its limits. Yeah, I might start working out a Workbench or a workflow for that. Actually friends, let's say I have this stuff, because that comes with the sources for XP bug and you just have to change your PHP.ini to use that and set the XP bug configuration stuff. Yes, then you have the XP bug built into your. What do you use to actually, so that makes it available on the server. So your web page is when they break, like a tracing, you can do stack tracing, you can also use Eclipse to then step through the code. Have you done that? Yes. Cool. So Eclipse and MAM. And not MAM, but XAMPP from Apache friends.org. MAM has X to build also. Because they have names. Yeah. Is this something that doesn't work out right and changes that you need files to enable it and it's trying to do it and doesn't actually do anything. So you're using Eclipse? I was using a Tana, which is like a Eclipse basically. Try Eclipse. That sounds like it might be a good presentation for next time. Okay. That seems like a good place to end. So for anyone who's interested, there will be a group walking down the streets and you can follow them if you want to hang out. Thanks.